package daos;

import hibernate.HibernateUtil;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import negocio.Especialidad;

public class EspecialidadDAO {
	
	private static EspecialidadDAO instancia = null;
	private static SessionFactory sf = null;

	public static EspecialidadDAO getInstancia(){
		if(instancia == null){
			sf = HibernateUtil.getSessionFactory();
			instancia = new EspecialidadDAO();
		} 
		return instancia;
	}
	
	public void guardarEspecialidad(Especialidad e){
		Session session = sf.openSession();
		session.beginTransaction();
		session.save(e);
		session.flush();
		session.getTransaction().commit();
		session.close();
	}

	public void eliminarEspecialidad(Especialidad e){
		Session session = sf.openSession();
		session.beginTransaction();
		session.delete(e);
		session.flush();
		session.getTransaction().commit();
		session.close();
	}

	public void modificarEspecialidad(Especialidad e){
		Session session = sf.openSession();
		session.beginTransaction();
		session.update(e);
		session.flush();
		session.getTransaction().commit();	
		session.close();
	}
		
	@SuppressWarnings("unchecked")
	public List<Especialidad> obtenerEspecialidades () {
		Session session = sf.openSession();
		List<Especialidad> especialidades = session.createQuery("from Especialidad e").list();
		session.close();
		return especialidades;
	}
	
	public void guardarOModificarEspecialidades(List<Especialidad> especialidades){
		Session session = sf.openSession();
		session.beginTransaction();
		for(Especialidad esp:especialidades){
			session.merge(esp);
		}
		session.flush();
		session.getTransaction().commit();
		session.close();
	}
}
